home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 9 / The PC-SIG Library on CD ROM - Ninth Edition.iso / 301_400 / DISK0368 / DISK0368.ZIP / REMARKS.BAS < prev    next >
BASIC Source File  |  1984-01-31  |  28KB  |  726 lines

  1. 4 DEFINT A-W,Y-Z /DEFINE ALL VARIABLES AS INTEGERS
  2. 35 DIM K$(80) / COUNT FOR INPUT SUBROUTINE
  3. 40 DIM FLGV(2000) / DIMENSION FLAG
  4. 70 CH = 8 / BACKSPACE CHARACTER
  5. 75 PRINT FRE(0) /PRINT FREE MEMORY
  6. 80 GOSUB 50000 / PRINT PROGRAM NAME AND COPYRIGHT NOTICE
  7. 100 GOSUB 52000 / PROMPT TO PUT CARD FILE IN DISK DRIVE
  8. 200 GOTO 40000 / INITIAL MENU
  9. 500 REM ******* CLS
  10. 510 CLS / CLEAR SCREEN
  11. 520 RETURN
  12. 7000 REM FIND LENGTH OF WORD /this subroutine determines the length of word less end spaces. Note LEN(A$) will not work as it counts end blanks
  13. 7010 MAX = 0  /INITIALIZE MAX
  14. 7020 MAX = MAX + 1 /INCREMENT MAXIMUM 
  15. 7030 IF MID$(WD$,MAX,1) = " " THEN RETURN /IF A SPACE THEN RETURN
  16. 7040 GOTO 7020 /REPEAT UNTILL END SPACE IS FOUND
  17. 8000 REM ***** FILE NAME ACCEPLABLE TEST ************
  18. 8010 TEST = 1 /INITIALIZE TEST TO 1
  19. 8100 FOR Q = 1 TO LEN(A$) / FOR ALL CHARACTERS IN THE FILE NAME
  20. 8110 K$(Q) = MID$(A$,Q,1) / GET THE Q'th character
  21. 8120 C = ASC(K$(Q)) / ASCII VALUE OF THE Q'th character
  22. 8130 IF C < 48 OR C > 122 THEN TEST = 4 / IF NOT A LETTER OR NUMBER THEN FILE     NAME IS NOT ACCEPTABLE
  23. 8140 IF Q = 1 AND ( C < 65 OR C > 122 ) THEN TEST = 4 /IF FIRST CHARACTER IS NOT A LETTER THE NAME IS NOT ACCEPTABLE
  24. 8150 NEXT Q / NEXT CHARACTER
  25. 8190 RETURN
  26. 9000 REM OPEN DATA FILE
  27. 9010  OPEN "R",#2,"CARDS",128  / OPEN CARD FILE AS FILE 2 RANDOM ACCESS LENGTH               128 CHARACTERS
  28. 9020  FIELD #2,28 AS WD$,50 AS DF1$,50 AS DF2$ /FIELD THE FILE 28 CHARACTERS AS  WD$ ( WORD ), 50 CHARACTERS AS DEFINITION 1, 50 CHARACTERS AS DEFINITION 2
  29. 9030 MRN = LOF(2)/128 /MAXIMUM RECORD NUMBER
  30. 9050 RETURN
  31. 9100 REM open and read flag file
  32. 9105 K = 1 /INITIALIZE COUNT TO ONE
  33. 9110 ON ERROR GOTO 9500 /IF FILE NOT FOUND GOTO 
  34. 9120 OPEN "I",#3,"FLAG" /OPEN FLAG FILE AS A SEQUENTIAL ACCESS FILE NUMBER 3
  35. 9125 ON ERROR GOTO 0 / TURN ON ERROR OFF
  36. 9127 INPUT #3,RN,MI / INPUT RECORD NUMBER, MISS NUMBER
  37. 9130 IF EOF(3) THEN 9200 / IF END OF FILE
  38. 9140 INPUT #3, FLGV(K) / INPUT FLAG VALUE
  39. 9150 K = K + 1 /INCREMENT COUNT
  40. 9160 GOTO 9130  / REPEAT UNTILL END OF FILE
  41. 9200 CLOSE #3 /CLOSE FILE
  42. 9205 GOSUB 9400 / COUNT FREQUENCY OF MISSES
  43. 9210 RETURN
  44. 9300 REM open and read flag file
  45. 9305 K = 1  / INITIALIZE COUNT
  46. 9310 ON ERROR GOTO 9500 /IF FILE NOT FOUND THEN 9500
  47. 9320 OPEN "I",#3,"SFLAG" /OPEN SFLAG AS SEQUENTIAL ACCESS FILE 3
  48. 9325 ON ERROR GOTO 0 / TURN ON ERROR OFF
  49. 9327 INPUT #3,RN,MI / INPUT RECORD NUMBER, NUMBER OF MISSES
  50. 9330 IF EOF(3) THEN 9200 / IF END OF FILE THEN 9200
  51. 9340 INPUT #3, FLGV(K) / INPUT FLAG
  52. 9350 K = K + 1 / INCREMENT COUNT
  53. 9360 GOTO 9330  / REPEAT UNTILL END OF FILE
  54. 9400 REM cont number of times missed
  55. 9405 GOSUB 9470 / SET COUNT MISSES TO 0
  56. 9410 FOR T = 1 TO MRN / FOR ALL RECORD NUMBERS
  57. 9420 R = FLGV(T) / FLAG VALUE, FLAG VALUE IS THE NUMBER OF TIMES YOU MISSED
  58. 9430 IF R > 8 THEN R = 8 / LIMIT MAX TO 8
  59. 9440 KTM(R) = KTM(R) + 1 / INCREMENT NUMBER COUNT MISSES
  60. 9450 NEXT T 
  61. 9460 RETURN
  62. 9470 REM SET KTM(R) TO 0
  63. 9475 FOR T = 0 TO 8
  64. 9480 KTM(T) = 0
  65. 9485 NEXT T
  66. 9490 RETURN
  67. 9500 REM FILE NOT FOUND
  68. 9510 PRINT " THE FILE WITH YOU PAST RESULTS HAS NOT BEEN FOUND"
  69. 9550 GOSUB 60000
  70. 9560 RETURN
  71. 9600 REM WRITE FLAG FILE
  72. 9610 PRINT " WRITING INFORMATION ON DISK, PLEASE WAIT"
  73. 9620 OPEN "O",#3,"FLAG" /OPEN FLAG FILE AS A SEQUENTIAL ACCESS FILE 3
  74. 9625 WRITE #3, RN, MI  / WRITE RECORD NUMBER, MISS
  75. 9630 FOR T = 1 TO MRN  / FOR ALL CARDS
  76. 9640 WRITE #3, FLGV(T) / WRITE THE FLAG VALUE
  77. 9645 REM  PRINT FLGV(T)
  78. 9650 NEXT T
  79. 9655 CLOSE #3
  80. 9660 RETURN
  81. 9700 REM WRITE FLAG FILE
  82. 9710 PRINT " WRITING INFORMATION ON DISK, PLEASE WAIT"
  83. 9720 OPEN "O",#3,"SFLAG" / OPEN SFLAG AS SEQUENTIAL ACCESS FILE 3
  84. 9725 WRITE #3, RN, MI / WRITE RECORD NUMBER, MISSES
  85. 9730 FOR T = 1 TO MRN  / FOR ALL CARDS
  86. 9740 WRITE #3, FLGV(T) / WRITE FLAG VALUE
  87. 9750 NEXT T
  88. 9755 CLOSE #3
  89. 9760 RETURN
  90. 10000 REM CONVERT FILES
  91. 10010 GOSUB 500 / CLEAR SCREEN
  92. 10100 PRINT " THIS PROGRAM CONVERTS FILES FROM SEQUENTIAL FILES"
  93. 10110 PRINT " TO RANDOM ACCESS FILES TO USE IN THIS PROGRAM "
  94. 10120 PRINT " "
  95. 10130 PRINT " YOU ONLY NEED TO BE USING THIS IF YOU ARE ADDING WORDS TO THE PROGRAM "
  96. 10140 PRINT ""
  97. 10150 PRINT "ENTER THE NAME OF THE FILE YOU WANT TO CONVERT "
  98. 10160 PRINT "JUST PRESS RETURN IF YOU DO NOT WANT TO CONVERT ANY FILES "
  99. 10170 MAX = 8 / LENGTH OF INPUT STRING
  100. 10180 GOSUB 62030 / STRING INPUT SUBROUTINE
  101. 10190 IF A$ = "" THEN 40000 / IS STRING IS BLANK RETURN TO MAIN MENU
  102. 10200 GOSUB 8000 / CHECK IF FILE NAME IS ACCEPTABLE
  103. 10210 IF TEST = 4 THEN 10000 / IF FILE NAME IS NOT ACCEPTABLE THEN 10000
  104. 10400 OPEN "I",#1,A$ / OPEN THE FILE YOU JUST ENTERED
  105. 10500 GOSUB 9000  / OPEN CARD FILE
  106. 10550 RN = 0 / INITIALIZE RECORD NUMBER TO 0
  107. 10600 IF EOF(1) = -1 THEN 10900 / IF END OF FILE THEN 10900
  108. 10610 INPUT #1,WI$,DI1$,DI2$ / INPUT WORD, DEFINTION 1 AND 2
  109. 10625 LSET  WD$ = WI$ /LSET WORD TO RANDOM ACCESS BUFFER
  110. 10630 PRINT WD$  / PRINT WORD ON SCREEN
  111. 10635 LSET  DF1$ = DI1$ /LSET DEFINITON TO RANDOM ACCESS BUFFER
  112. 10640 PRINT DF1$ / PRINT DEFINITION ON SCREEN
  113. 10645 LSET  DF2$ = DI2$ /LSET 2ND DEFINITION TO RANDOM ACCESS BUFFER
  114. 10647 PRINT DF2$ / PRINT SECOND DEFINITION
  115. 10650 RN = RN + 1 /INCREMENT RECORD NUMBER
  116. 10700 PUT #2,RN / WRITE BUFFER ON DISK
  117. 10710 GOTO 10600 /REPEAT UNTILL END OF FILE
  118. 10900 CLOSE  / CLOSE ALL FILES 
  119. 10910 GOTO 40000 /BACK TO MAIN MENU
  120. 10950 REM START FLASH CARDS
  121. 10960 GOSUB 9000 / OPEN CARD FILE
  122. 10965 GOSUB 9100 / OPEN AND READ FLAG FILE
  123. 10970 GOSUB 23000 / ASK FOR RECORD NUMBER TO START AT AND NUMBER OF MISSES
  124. 10975 GOSUB 13000 / ASK WHAT FORMAT YOU WANT THE QUESTION IN
  125. 10980 RGT = 0 / INITIALIZE RIGHT ANSWERS
  126. 10990 WRG = 0 / INITIALIZE WRONG ANSWERS
  127. 11000 IF FLGV(RN) < MI THEN 16000 / IF FLAG IS LESS THEN NUMBER OF MISSES THEN              SKIP TO NEXT WORD
  128. 11003 GET #2,RN / GET CARD
  129. 11005 GOSUB 500 / CLEAR SCREEN
  130. 11010 IF RV = 1 THEN PRINT WD$;TAB(35)" 0 - exit ";TAB (50) "RIGHT"; RGT;" WRONG ";WRG / IF SHOW PROMPT THEN PRINT PROMPT
  131. 11012 IF RV = 2 THEN PRINT DF1$;TAB(35) " 0 - exit ";TAB (50) "RIGHT"; RGT;" WRONG ";WRG  / IF SHOW DESCRIPTION THEN PRINT DESCRIPTION ON SCREEN
  132. 11014 IF RV = 2 THEN PRINT DF2$ / IF SHOW DESCRIPTION THEN PRINT DESCRIPTION ON SCREEN 
  133. 11020 GOSUB 12000 / PRINT OUT CHOISES
  134. 11030 GOSUB 60000 / INPUT SUBROUTINE 
  135. 11040 IF DT# < 0 OR DT# > 6 THEN 11030 / IF ANSWER OUT OF RANGE THEN REASK
  136. 11045 IF DT# = 0 THEN 18000  / IF ANSWER 0, EXIT THEN 18000
  137. 11100 IF DT# = T THEN 14000 ELSE 15000 /IF ANSWER CORRECT THEN 14000 ELSE 15000
  138. 12000 REM print random options on screen
  139. 12010 T = INT(RND * 7 + 1 ) / T IS A RANDOM NUMBER FROM ONE TO 6, T IS THE              CORRECT ANSWER
  140. 12020 IF T = 7 THEN 12010 
  141. 12030 FOR N = 1 TO 6 / PRINT SIX POSSIBLE CHOISES ON THE SCREEN
  142. 12040 RNT= INT(RND * MRN + 1) / CHOSE A CARD AT RANDOM
  143. 12050 IF RNT = RN THEN 12040 / IF CARD IS THE CORRECT ANSWER THEN CHOSE ANOTHER            CARD
  144. 12060 PRINT N / PRINT THE NUMBER OF THE CHOISE
  145. 12063 IF N >< T THEN 12100 / IF NOT THE CORRECT ANSWER
  146. 12065 GET #2,RN  / GET THE RECORD NUMBER 
  147. 12070 IF RV = 1 THEN PRINT DF1$ / PRINT DEFINITION
  148. 12080 IF RV = 1 THEN PRINT DF2$ / PRINT DEFINITION
  149. 12085 IF RV = 2 THEN PRINT WD$  / PRINT WORD
  150. 12087 IF RV = 2 THEN PRINT "" 
  151. 12090 GOTO 12200   
  152. 12100 GET #2,RNT  / GET THE RECORD NUMBER 
  153. 12110 IF RV = 1 THEN PRINT DF1$ ELSE PRINT WD$ / PRINT DEFINITION OR WORD
  154. 12120 IF RV = 1 THEN PRINT DF2$ / PRINT DEFINITION
  155. 12130 IF RV = 2 THEN PRINT ""
  156. 12200 NEXT N  / PRINT NEXT CHOICE UP TO 6
  157. 12300 RETURN
  158. 13000 REM reverse
  159. 13010 GOSUB 500 / CLEAR SCREEN
  160. 13020 PRINT "*******  HOW DO YOU WANT THE QUESTIONS ASKED  ******* "
  161. 13030 PRINT " 1 - SHOW PROMPT, MULTIPLE CHOICE OF DESCRIPTIONS "
  162. 13040 PRINT " 2 - SHOW DESCRIPTION, MULTIPLE CHOICE OF PROMPTS "
  163. 13050 PRINT "********  ENTER THE NUMBER THEN PRESS RETURN  *******"
  164. 13060 GOSUB 60000 / INPUT INTEGER SUBROUTINE
  165. 13070 IF DT# < 1 OR DT# > 2 THEN 13060 / IF  OT ONE OR TWO ASK AGAIN
  166. 13080 RV = DT# / RV, REVERSE OPTION EQUALS NUMBER INPUT FROM SUBROUTINE
  167. 13100 RETURN
  168. 14000 REM  KNOWS SUBROUTINE"
  169. 14100 PRINT " RIGHT AGAIN "
  170. 14105 IF INKEY$ = "" THEN 14105 / STAY HERE UNTILL ANY KEY IS PRESSED
  171. 14110 RGT = RGT + 1 / INCREMENT NUMBER RIGHT
  172. 14500 GOTO 16000
  173. 15000 REM DONT KNOW SUBROUTINE 
  174. 15020 PRINT " WRONG "
  175. 15030 PRINT " THE CORRECT ANSWER IS ";T
  176. 15040 WRG = WRG + 1 / INCREMENT NUMBER WRONG
  177. 15050 IF INKEY$ = "" THEN 15050 / STAY HERE UNTILL A KEY IS PRESSED
  178. 15100 FLGV(RN) = FLGV(RN) + 1 / INCREMENT FLAG VALUE
  179. 15500 GOTO 16000
  180. 16000 REM CONTINUE
  181. 16100 RN = RN + 1 / INCREMENT RECORD NUMBER
  182. 16110 IF RN > MRN THEN 17000 / IF RECORD NUMBER IS GREATER THEN MAXIMUM RECORD         NUMBER THEN 17000
  183. 16500 GOTO 11000 / START OVER WITH NEXT CARD
  184. 17000 REM END OF CARDS
  185. 17010 GOSUB 39000 / ASK IF YOU WANT TO CONTINUE
  186. 17300 RN = 1 / RESET RECORD NUMBER TO 1
  187. 17305 IF DT# = 2 THEN 11000 / IF YOU WANT TO START OVER AGAIN THEN 11000
  188. 17310 MI = 0 / MISS NUMBER = 0
  189. 17400 GOSUB 9600 / WRITE FLAG FILE ON DISK
  190. 17500 GOTO 40000 / BACK TO MAIN MENU
  191. 18000 REM 
  192. 18100 PRINT "**********  DO YOU WANT TO  ****************"
  193. 18110 PRINT "         1 - EXIT "
  194. 18120 PRINT "         2 - CONTINUE "
  195. 18130 PRINT "***  ENTER THE NUMBER THEN PRESS RETURN  ***"
  196. 18140 GOSUB 60000 / INPUT SUBROUTINE
  197. 18150 IF DT# > 2 OR DT# < 1 THEN 18000 / IF ANSWER IS NOT 1 OR 2 ASK AGAIN
  198. 18160 IF DT# = 2 THEN 11000 / CONTINUE
  199. 18165 GOSUB 9600 / WRITE FLAGS ON MAIN MENU
  200. 18170 GOTO 40000 / BACK TO MAIN MENU
  201. 20000 REM START FLASH CARDS
  202. 20100 GOSUB 9000 / OPEN CARD FILE
  203. 20110 GOSUB 9100 / OPEN AND READ FLAG FILE
  204. 20130 GOSUB 23000 / ASK STARTING RECORD NUMBER
  205. 20500 REM reverse 
  206. 20510 GOSUB 500 / CLEAR SCREEN
  207. 20520 PRINT "*******  DO YOU WANT TO SEE THE CARDS  *******"
  208. 20530 PRINT "           1 - PROMPT FIRST "
  209. 20540 PRINT "           2 - DESCRIPTION FIRST "
  210. 20550 PRINT "****  ENTER THE NUMBER THEN PRESS RETURN  ****"
  211. 20560 GOSUB 60000 / INPUT SUBROUTINE
  212. 20570 IF DT# < 1 OR DT# > 2 THEN 20560 / IF OUT OF RANGE THEN REASK
  213. 20580 RV = DT# / REVERSE OPTION EQUALS VALUE RETURNED FROM INPUT SUBROUTINE
  214. 21000 IF FLGV(RN) < MI THEN 26000 / IF FLAG VALUE LESS THEN MISS VALUE THEN 2600
  215. 21002 IF T = RN THEN 21005 /IF RECORD ALREADY IF BUFFER THEN SKIP NEXT STATEMENT
  216. 21003 GET #2,RN / GET RECORD NUMBER 
  217. 21005 GOSUB 500 / CLEAR SCREEN
  218. 21010 IF RV = 1 THEN PRINT WD$  / PRINT WORD
  219. 21012 IF RV = 2 THEN PRINT DF1$ / PRINT DEFINITION
  220. 21014 IF RV = 2 THEN PRINT DF2$ / PRINT DEFINITION
  221. 21016 IF RV = 2 THEN PRINT "" 
  222. 21020 T$ = INKEY$ 
  223. 21022 IF T$  = "" THEN 21020  / LOOP  UNTILL A KEY IS PRESSED 
  224. 21025 IF T$ = "K" OR T$ = "k" THEN 24000 / IF K IS PRESSED THEN 24000
  225. 21027 IF T$ = "E" OR T$ = "e" THEN 28000 / IF E IS PRESSED THEN 28000
  226. 21030 IF RV = 1 THEN PRINT DF1$ / PRINT DESCRIPTION 
  227. 21035 IF RV = 2 THEN PRINT WD$ / PRINT WORD 
  228. 21040 IF RV = 1 THEN PRINT DF2$ / PRINT DESCRIPTION
  229. 21042 PRINT "" / SHIP TO NEXT LINE
  230. 21043 GOSUB 27600 / GET RECORD IN ADVANCE
  231. 21045 T$ = INKEY$ 
  232. 21050 IF T$ = "" THEN 21045 / LOOP UNTILL ANY KEY IS PRESSED
  233. 21100 IF T$ = "K" OR T$ = "k" THEN 24000 / IF K IS PRESSED THEN 24000
  234. 21110 IF T$ = "D" OR T$ = "d" THEN 25000 / IF D IS PRESSED THEN 25000
  235. 21115 IF T$ = "E" OR T$ = "e" THEN 28000 / IF E IS PRESSED THEN 28000
  236. 21118 PRINT "PRESS  D - don't know or  K - know  E - exit     "
  237. 21120 GOTO 21045  / KEY PRESSED IS NOT ACCEPTABLE
  238. 23000 REM ask which ones you want to review
  239. 23010 GOSUB 500 / CLEAR SCREEN
  240. 23055 GOSUB 23500 / PRINT NUMBER MISSED
  241. 23058 PRINT ""
  242. 23060 PRINT "YOU MAY REVIEW CARDS THAT WERE MISSED X NUMBER OF TIMES OR MORE  "
  243. 23070 PRINT "ENTER 0 IF YOU WANT TO REVIEW ALL CARDS "
  244. 23100 GOSUB 60000 / INPUT SUBROUTINE
  245. 23110 MI = DT# / MISS NUMBER EQUALS VALUE RETURNED FROM INPUT SUBROUTINE
  246. 23200 PRINT "WHICH CARD DO YOU WANT TO START/CONTINUE AT"
  247. 23205 IF RN < 1 THEN RN = 1  / RN MUST BE GREATER THEN 0
  248. 23210 PRINT "COMPUTER RECCOMENDS ";RN
  249. 23215 IF RN > 1 THEN PRINT "YOU ENDED YOU LAST REVIEW ON CARD NUMBER ";RN
  250. 23220 GOSUB 60060 / INPUT SUBROUTINE
  251. 23230 IF DT# < 1 OR DT# >MRN THEN 23200 / IF OUT OF RANGE THEN REASK
  252. 23235 RN = DT# / RN EQUALS NUMBER RETURNED FROM INPUT SUBROUTINE
  253. 23240 RETURN
  254. 23500 REM PRINT NUMBER OF TIMES MISSED
  255. 23510 FOR T = 0 TO 7
  256. 23520 PRINT "TOTAL CARDS MISSED ";T;" TIMES IS ";KTM(T)
  257. 23530 NEXT T
  258. 23535 PRINT "TOTAL CARDS MISSED >7  TIMES IS ";KTM(8)
  259. 23540 RETURN
  260. 24000 REM  KNOWS SUBROUTINE"
  261. 24500 GOTO 26000 
  262. 25000 REM DONT KNOW SUBROUTINE 
  263. 25100 FLGV(RN) = FLGV(RN) + 1 / INCREMENT FLAG VALUE
  264. 25500 GOTO 26000
  265. 26000 REM CONTINUE
  266. 26100 RN = RN + 1 / INCREMENT RECORD NUMBER
  267. 26110 IF RN > MRN THEN 27000 /IF END OF CARDS
  268. 26500 GOTO 21000 /NEXT CARD
  269. 27000 REM END OF CARDS
  270. 27100 GOSUB 39000 /ASK IF YOU WANT TO CONTINUE SUBROUTINE
  271. 27300 RN = 1 / RESET RECORD NUMBER TO 1
  272. 27305 IF DT# = 2 THEN 21000 /IF CONTINUE OPTION THEN START OVER
  273. 27310 MI = 0 / MISS EQUALS 0
  274. 27400 GOSUB 9600 / WRITE INFORMATION ON DISK 
  275. 27500 GOTO 40000 / TO MAIN MENU
  276. 27600 REM GET RECORD IN ADVANCE 
  277. 27610 T = RN + 1 / T EQUALS RECORD NUMBER + 1
  278. 27620 IF T > MRN THEN RETURN / IF T IS GREATER THEN THE MAXIMUM RECORD NUMBER                 THEN RETURN
  279. 27630 IF MI <= FLGV(T) THEN 27700 /IF MISS LESS THEN OR EQUAL TO FLGV THEN 27700            
  280. 27640 T = T + 1   / INCREMENT T
  281. 27650 GOTO 27620  / GET NEXT NUMBER
  282. 27700 GET #2,T / GET RECORD NUMBER
  283. 27710 RETURN
  284. 28000 REM 
  285. 28100 PRINT "**********  DO YOU WANT TO  ****************"
  286. 28110 PRINT "   1 - EXIT "
  287. 28120 PRINT "   2 - CONTINUE WITH THE CARDS "
  288. 28130 PRINT "***  ENTER THE NUMBER THEN PRESS RETURN  ***"
  289. 28140 GOSUB 60000  / INPUT SUBROUTINE 
  290. 28150 IF DT# > 2 OR DT# < 1 THEN 28000 / IF OUT OF RANGE THEN REASK
  291. 28160 IF DT# = 2 THEN 21000 / IF CONTINUE WAS CHOSEN THEN 21000
  292. 28170 GOSUB 9600 / SAVE FLAGS ON DISK
  293. 28200 GOTO 40000 / TO MAIN MENU
  294. 30000 REM START SPELLING    
  295. 30100 GOSUB 9000 / OPEN CARD FILE
  296. 30110 GOSUB 9300 / OPEN AND READ SFLAG FILE
  297. 30120 GOSUB 23000 / ASK WHICH RECORD NUMBER TO START AT SUBROUTINE
  298. 30200 REM 
  299. 31000 IF FLGV(RN) < MI THEN 36000 /IF FLAG IS LESS THEN MISS THEN 36000
  300. 31003 GET #2,RN /GET RECORD NUMBER 
  301. 31005 GOSUB 500 /CLEAR SCREEN
  302. 31010 PRINT DF1$;TAB(60)"E - EXIT" /PRINT DESCRIPTION
  303. 31012 PRINT DF2$                   /PRINT DESCRIPTION
  304. 31015 K1$= LEFT$(WD$,1) / FIRST CHARACTER OF THE WORD
  305. 31018 PRINT ""
  306. 31020 PRINT TAB(2) K1$ / PRINT THE FIRST CHARACTER OF THE WORD
  307. 31030 GOSUB 7000   / DETERMINE LENGTH OF THE WORD
  308. 31035 MAX = MAX - 1 / DECREMENT MAX
  309. 31040 GOSUB 62030 / INPUT STRING SUBROUTINE
  310. 31050 IF A$ = "E" OR A$ = "e" THEN GOTO 38000 / IF E FOR EXIT
  311. 31100 IF A$ = LEFT$(WD$,MAX) THEN  34000 ELSE 35000 /IF SPELLED CORRECT
  312. 31110 IF INKEY$ = "D" THEN 25000 
  313. 34000 REM  KNOWS SUBROUTINE"
  314. 34010 PRINT " RIGHT "
  315. 34100 IF INKEY$ = "" THEN 34100 /STAY HERE UNTILL A KEY IS PRESSED
  316. 34500 GOTO 36000
  317. 35000 REM DONT KNOW SUBROUTINE 
  318. 35010 PRINT TAB(2) WD$ /PRINT CORRECT SPELLING
  319. 35020 PRINT " WRONG "
  320. 35030 IF INKEY$ = "" THEN 35030 /STAY HERE UNTILL A KEY IS PRESSED
  321. 35035 FLGV(RN) = FLGV(RN) + 1 /INCREMENT FLAG
  322. 35500 GOTO 36000
  323. 36000 REM CONTINUE
  324. 36100 RN = RN + 1 /INCREMENT RN
  325. 36110 IF RN > MRN THEN 37000 /IF RECORD NUMBER IS GREATER THEN THE MAXIMUM                   RECORD NUMBER 
  326. 36500 GOTO 31000  /START OVER
  327. 37000 REM END OF CARDS
  328. 37060 RN = 1 /RECORD NUMBER
  329. 37065 GOSUB 39000 /END OF FILE SUBROUTINE
  330. 37070 IF DT# = 2 THEN 31000 /IF CHOSE TO CONTINUE THEN CONTINE
  331. 37080 MI = 1 /MISS EQUALS 1
  332. 37100 GOSUB 9700 / WRITE SFLAG ON DISK
  333. 37130 GOTO 40000 / BACK TO MAIN MENU
  334. 38000 REM exit the spelling checker
  335. 38100 PRINT "************  DO YOU WANT TO  **************"
  336. 38110 PRINT "   1 - EXIT "
  337. 38120 PRINT "   2 - CONTINUE WITH THE CARDS "
  338. 38130 PRINT "***  ENTER THE NUMBER THEN PRESS RETURN  ***"
  339. 38140 GOSUB 60000 /INPUT SUBROUTINE
  340. 38150 IF DT# > 2 OR DT# < 1 THEN 38000 /IF OUT OF RANGE THEN REASK
  341. 38160 IF DT# = 2 THEN 31000 /CONTINUE
  342. 38170 GOSUB 9700 /SAVE SFLAG ON DISK
  343. 38200 GOTO 40000 /CONTINUE 
  344. 39000 REM END OF FILE
  345. 39100 PRINT "****  END OF FLASH CARDS ON THIS DISK  *****"
  346. 39110 PRINT "           DO YOU WANT TO "
  347. 39120 PRINT "   1 - RETURN TO MAIN MENU "
  348. 39130 PRINT "   2 - RUN THROUGH THE SAME CARDS AGAIN "
  349. 39140 PRINT "***  ENTER THE NUMBER THEN PRESS RETURN  ***"
  350. 39150 GOSUB 60000 /INPUT SUBROUTINE
  351. 39160 IF DT# < 1 OR DT# > 2 THEN 39150 / IF OUT OF RANGE THEN REASK
  352. 39300 RETURN
  353. 40000 REM *******  INITIAL MENU   *********
  354. 40030 CLOSE  /CLOSE ALL FILES
  355. 40060 GOSUB 500 /CLEAR SCREEN
  356. 40080 PRINT "****************    FLASH  CARD  MENU   ******************"
  357. 40100 PRINT ""
  358. 40120 PRINT "    0 - EXIT TO OPERATING SYSTEM"
  359. 40125 PRINT ""
  360. 40140 PRINT "    1 - FLASH CARDS "
  361. 40145 PRINT ""
  362. 40160 PRINT "    2 - MULTIPLE CHOICE    "
  363. 40165 PRINT ""
  364. 40180 PRINT "    3 - SPELLING REVIEW   "
  365. 40185 PRINT ""
  366. 40200 PRINT "    4 - PRINT CARDS ON PAPER   "
  367. 40205 PRINT ""
  368. 40220 PRINT "    5 - CONVERT FILES  "
  369. 40240 PRINT ""
  370. 40245 PRINT "    6 - RESET MISSED WORDS TO 0 "
  371. 40250 PRINT ""
  372. 40260 PRINT "*********  ENTER THE NUMBER THEN PRESS RETURN  ***********"
  373. 40280 GOSUB 60000 /INPUT INTEGER SUBROUTINE
  374. 40282 IF DT# <0 OR DT# >6 GOTO 40280 /IF NUMBER ENTERED OUT OF RANGE
  375. 40300 T = DT# 
  376. 40310 IF T = 0 THEN 51000 / TO EXIT PROGRAM SUBROUTINE
  377. 40320 ON T GOTO 20000,10950,30000,41000,10000,42000 /ON THE OPTION CHOSEN GOTO
  378. 40340 GOSUB 500 /CLEAR SCREEN
  379. 41000 REM print words on paper
  380. 41100 GOSUB 9000 /OPEN CARD FILE
  381. 41110 GOSUB 500 /CLEAR SCREEN
  382. 41120 PRINT "   DO YOU WANT TO PRINT:"
  383. 41130 PRINT "   1 - WORDS THAT YOU ARE HAVING VOCABULARY PROBLEMS WITH "
  384. 41140 PRINT "   2 - WORDS THAT YOU ARE HAVING SPELLING PROBLEMS WITH "
  385. 41150 PRINT "   0 - RETURN TO MAIN MENU
  386. 41160 PRINT "   ENTER THE OPTION NUMBER THEN PRESS RETURN "
  387. 41170 GOSUB 60000 /INPUT INTEGER SUBROUTINE
  388. 41180 IF DT# < 0 OR DT# > 2 THEN 41110 /IF OUT OF RANGE THE REASK
  389. 41185 IF DT# = 0 THEN 40000 /TO MAIN MENU
  390. 41190 IF DT# = 1 THEN GOSUB 9100 ELSE GOSUB 9300 /READ FLAG OF SFLAG FILE
  391. 41195 GOSUB 41500 /ASK IF SHOULD PRINT ON PAPER OR SCREEN
  392. 41300 GOSUB 23000 / ASK RECORD NUMBER
  393. 41305 PRINT " PRESS ANY KEY TO PAUSE "
  394. 41310 FOR T = 1 TO MRN / FOR ALL THE CARDS 
  395. 41312 IF INKEY$ >< "" THEN 41700 / IF ANY KEY IS PRESSED THEN PAUSE SUBROUTINE
  396. 41315 IF FLGV(T) < MI THEN 41360 /IF FLAG IS LESS THEN MISS THEN DON't print
  397. 41320 GET #2,T    /GET RECORD 
  398. 41330 PRINT WD$   / PRINT WORD
  399. 41340 PRINT DF1$  / PRINT DESCRIPTION
  400. 41350 PRINT DF2$  / PRINT DESCRIPTION
  401. 41355 IF LPRT = 2 THEN GOSUB 41600 /LINE PRINT OPTION
  402. 41360 NEXT T
  403. 41400 GOTO 40000 /MAIN MENU
  404. 41500 REM ask lprint option
  405. 41510 PRINT "*********  DO YOU WANT THE WORDS  ************"
  406. 41520 PRINT "    1 - SHOWN ON THE SCREEN ONLY "
  407. 41530 PRINT "    2 - SHOWN ON THE SCREEN AND ON THE PAPER"
  408. 41540 PRINT "****  ENTER THE NUMBER THEN PRESS RETURN  ****"
  409. 41560 GOSUB 60000  /INPUT SUBROUTINE
  410. 41570 IF DT# < 1 OR DT# >2 THEN 41560 /IF OUT OF RANGE THEN REASK
  411. 41580 LPRT = DT# /LPRT EQUALS VALUE RETURNED FROM INPUT SUBROUTINE
  412. 41590 RETURN
  413. 41600 REM  PRINT ON PAPER
  414. 41630 LPRINT WD$   / PRINT WORD
  415. 41640 LPRINT DF1$  / PRINT DESCRIPTION
  416. 41650 LPRINT DF2$  / PRINT DESCRIPTION
  417. 41660 RETURN
  418. 41700 REM PAUSE SUBROUTINE
  419. 41710 PRINT "************  PAUSE SUBROUTINE  ************ "
  420. 41720 PRINT "    1 - CONTINUE  2 - BACK TO MAIN MENU "
  421. 41725 PRINT "***  ENTER THE NUMBER THEN PRESS RETURN  ***"
  422. 41730 GOSUB 60000 /INPUT SUBROUTINE
  423. 41740 IF DT# < 1 OR DT# > 2 THEN 41730  / IF OUT OF RANGE THEN REASK
  424. 41750 IF DT# = 1 THEN 41312 ELSE 40000  / CONTINE OR BACK TO MAIN MENU
  425. 42000 REM reset missed 
  426. 42100 GOSUB 500 /CLEAR SCREEN
  427. 42110 PRINT " USE THIS NEW OPTION IF YOU ARE A NEW STUDENT "
  428. 42120 PRINT " THIS OPTION WILL RESET THE WORDS PREVIOULY MISSED TO NONE"
  429. 42130 PRINT ""
  430. 42140 PRINT " DO YOU WANT TO CLEAR ALL THE MISSES"
  431. 42150 PRINT "      1 - NO "
  432. 42160 PRINT "      2 - YES "
  433. 42165 PRINT " ENTER THE NUMBER THEN PRESS RETURN"
  434. 42170 GOSUB 60000 /INPUT INTEGER SUBROUTINE
  435. 42180 IF DT# < 1 OR DT# > 2 THEN 42170 /IF OUT OF RANGE THEN REASK
  436. 42190 IF DT# = 1 THEN 40000 / BACK TO MAIN MENU
  437. 42300 FOR T = 1 TO MRN /FOR ALL RECORD NUMBERS
  438. 42310 FLGV(T) = 0  /SET FLAG TO ZERO
  439. 42320 NEXT T
  440. 42330 GOSUB 9600 /WRITE ZEROS TO FLAG FILE
  441. 42340 GOSUB 9700 /WRITE ZEROS TO SFLAG FILE
  442. 42350 GOTO 40000 /MAIN MENU
  443. 50000 REM **********  INTRO
  444. 50010 GOSUB 500 /CLEAR SCREEN
  445. 50100 PRINT "           F L A S H    C A R D    P R O G R A M    1.0   "
  446. 50105 PRINT ""
  447. 50110 PRINT "         Copyright 1985 by Potomac Pacific Engineering Inc."
  448. 50120 PRINT ""
  449. 50130 PRINT "This program is licensed FREE to all users with some restrictions"
  450. 50165 PRINT "        See the manual for more information on the license."
  451. 50167 PRINT ""
  452. 50950 PRINT "******************  PRESS ANY KEY TO CONTINUE  *****************";
  453. 50960 IF INKEY$ = "" GOTO 50960  /STAY HERE UNTILL ANY KEY IS PRESSED
  454. 50970 RETURN
  455. 51000 REM ***** EXIT TO SYSTEM
  456. 51050 REM   GOSUB 9600
  457. 51100 GOSUB 500  / CLEAR SCREEN
  458. 51110 CLOSE / CLOSE ALL FILES
  459. 51120 PRINT " -BYE, Have a nice day"
  460. 51130 END
  461. 52000 REM ***** INTRO 1
  462. 52010 GOSUB 500
  463. 52100 PRINT "           Put the disk with the files (cards) that you "
  464. 52105 PRINT "            want to use in the defualt disk drive "
  465. 52110 PRINT ""
  466. 52120 PRINT "          *****  THEN PRESS ANY KEY TO CONTINUE  *****"
  467. 52130 PRINT ""
  468. 52140 PRINT "      The Flash Card program only use the Default disk drive"
  469. 52150 PRINT "Keep it in the default disk drive at all times during this program."
  470. 52200 IF INKEY$ = "" GOTO 52200 /STAY HERE UNTILL ANY KEY IS PRESSED
  471. 52210 RETURN
  472. 60000 REM *******  INTEGER LESS THEN 100 CHECK  ********
  473. 60010 MAX = 2
  474. 60020 ACT$ = "1234567890=<>^"
  475. 60030 IF NE = 0 THEN ACT$ = "1234567890"
  476. 60040 PRINT ">__<";
  477. 60050 GOTO 60240
  478. 60060 REM *******  INTEGER *******                        
  479. 60070 MAX = 8
  480. 60080 ACT$ = "1234567890-+,=<>^"
  481. 60090 IF NE = 0 THEN ACT$ = "1234567890-+,"
  482. 60100 PRINT ">________<";
  483. 60110 GOTO 60240
  484. 60120 REM *******  SINGLE PRECISION  *******                        
  485. 60130 MAX = 10
  486. 60140 ACT$ = "1234567890-+,.%$=<>^"
  487. 60150 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  488. 60160 PRINT ">__________<";
  489. 60170 GOTO 60240
  490. 60180 REM *******  DOUBLE PRECISION  *******                        
  491. 60190 MAX = 20
  492. 60200 ACT$ = "1234567890-+,.%$=<>^"
  493. 60210 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  494. 60220 PRINT ">____________________<";
  495. 60230 GOTO 60240
  496. 60240 REM ********** NUMBER CHECK **********
  497. 60250 A$ = ""
  498. 60260 K$(20) = " "
  499. 60270 KTMAX = 0
  500. 60280 FOR T9 = 1 TO MAX
  501. 60290 K$(T9) = " "
  502. 60300 NEXT T9
  503. 60310 DIG$ = "1234567890."
  504. 60320 DOTFLG = 0
  505. 60330 T2 = MAX + 1
  506. 60340 FOR T6 = 1 TO T2
  507. 60350 PRINT CHR$(CH);
  508. 60360 NEXT T6
  509. 60370 IF INKEY$ = "" GOTO 60380 ELSE GOTO 60370
  510. 60380 KT = 0
  511. 60390 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  512. 60400 KT = KT + 1
  513. 60410 REM     
  514. 60420 W$ = INKEY$
  515. 60430 IF W$ = "" GOTO 60420
  516. 60440 C = ASC(W$)
  517. 60450 IF C = 0 THEN GOSUB 61900
  518. 60460 IF C = 13 GOTO 60580
  519. 60470 IF C = 17 OR C = 8 GOTO 61150
  520. 60480 IF C = 19 GOTO 60670
  521. 60490 IF C = 4 GOTO 60720
  522. 60500 IF C = 6 GOTO 60780
  523. 60510 IF C = 1 GOTO 60960
  524. 60520 IF KT > MAX GOTO 60410
  525. 60530 IF INSTR(ACT$,W$) = 0 GOTO 61230
  526. 60540 K$(KT) = W$
  527. 60550 PRINT K$(KT);
  528. 60560 IF KT > KTMAX THEN KTMAX = KT
  529. 60570 GOTO 60400
  530. 60580 REM **********  RETURN  **********
  531. 60590 FOR T9 = 1 TO KTMAX
  532. 60600 A$ = A$ + K$(T9)
  533. 60610 NEXT T9
  534. 60620 IF KTMAX = 0 THEN PRINT "1"
  535. 60630 IF KTMAX = 0 THEN DT# = 1
  536. 60640 IF KTMAX = 0 THEN RETURN
  537. 60650 PRINT ""
  538. 60660 GOTO 61260
  539. 60670 REM ********* MOVE CURSE BACK ********
  540. 60680 IF KT = 1 GOTO 60410
  541. 60690 KT = KT - 1
  542. 60700 PRINT CHR$(CH);
  543. 60710 GOTO 60410
  544. 60720 REM ********* MOVE CURSER FORWARD *********
  545. 60730 IF KT >= MAX GOTO 60410
  546. 60740 IF KT > (KTMAX + 1) GOTO 60410
  547. 60750 PRINT K$(KT);
  548. 60760 KT = KT + 1
  549. 60770 GOTO 60410
  550. 60780 REM ********** INSERT ***********
  551. 60790 IF KT > KTMAX GOTO 60410
  552. 60800 X9 = MAX
  553. 60810 WHILE X9 > KT
  554. 60820 X9 = X9 - 1
  555. 60830 K$(X9 + 1) = K$(X9)
  556. 60840 WEND 
  557. 60850 K$(KT) = " "
  558. 60860 KTMAX = KTMAX + 1
  559. 60870 IF KTMAX > MAX THEN KTMAX = MAX
  560. 60880 FOR T9 = KT TO KTMAX
  561. 60890 PRINT K$(T9);
  562. 60900 NEXT T9
  563. 60910 T6 = (KTMAX - KT) + 1
  564. 60920 FOR T7 = 1 TO T6
  565. 60930 PRINT CHR$(CH);
  566. 60940 NEXT T7
  567. 60950 GOTO 60410
  568. 60960 REM ********** DELETE ***********
  569. 60970 IF KT > KTMAX GOTO 60410
  570. 60980 IF KTMAX = 1 GOTO 60410
  571. 60990 K$(MAX + 1) = ""
  572. 61000 X9 = KT 
  573. 61010 WHILE X9 <= MAX
  574. 61020 K$(X9) = K$(X9 + 1)
  575. 61030 X9 = X9 + 1
  576. 61040 WEND 
  577. 61050 KTMAX = KTMAX - 1
  578. 61060 FOR T9 = KT TO KTMAX
  579. 61070 PRINT K$(T9);
  580. 61080 NEXT T9
  581. 61090 PRINT "_";
  582. 61100 T7 = (KTMAX - KT) + 2
  583. 61110 FOR T8 = 1 TO T7
  584. 61120 PRINT CHR$(CH);
  585. 61130 NEXT T8
  586. 61140 GOTO 60410
  587. 61150 REM ********* BACKSPACE ********
  588. 61160 IF KT = 1 GOTO 60410
  589. 61170 KT = KT - 1
  590. 61180 PRINT CHR$(CH);
  591. 61190 K$(KT) = " " 
  592. 61200 PRINT "_";
  593. 61210 PRINT CHR$(CH);
  594. 61220 GOTO 60410
  595. 61230 REM *******  INPUT NOT ACCEPTABLE  ********
  596. 61240 PRINT CHR$(7);
  597. 61250 GOTO 60420
  598. 61260 REM ********* CLEAR STRINGS ********
  599. 61270 MAX = LEN(A$)
  600. 61280 D2$ = ""
  601. 61290 D1$ = ""
  602. 61300 DFLG = 0
  603. 61310 FOR Q93 = 1 TO MAX
  604. 61320 R$ = MID$(A$,Q93,1)
  605. 61330 IF INSTR(DIG$,R$) = 0 GOTO 61400
  606. 61340 IF R$ = "." OR DFLG = 1 GOTO 61380
  607. 61350 IF DFLG = 1 GOTO 61380
  608. 61360 D2$ = D2$ + R$
  609. 61370 GOTO 61400
  610. 61380 D1$ = D1$ + R$
  611. 61390 DFLG = 1
  612. 61400 NEXT Q93
  613. 61410 DA# = VAL(D2$)
  614. 61420 D1# = VAL(D1$)
  615. 61430 DT# = DA# + D1#
  616. 61440 IF K$(1) = "-" THEN DT# =  -DT#   
  617. 61450 RETURN
  618. 61900 REM ****** CHECK FOR ASC0
  619. 61910 S4$ = INKEY$
  620. 61920 C2 =  ASC(S4$)
  621. 61930 IF C2 = 83 THEN C = 1
  622. 61940 IF C2 = 82 THEN C = 6
  623. 61950 IF C2 = 75 THEN C = 19
  624. 61960 IF C2 = 77 THEN C = 4 
  625. 61970 RETURN
  626. 62000 REM **********  ALPHANUMERIC CHECK  **************
  627. 62010 MAX = FL(A,Q)
  628. 62020 GOTO 62040
  629. 62030 REM ********  MAX SET IN PROGRAM  ********
  630. 62040 A$ = ""
  631. 62050 PRINT ">"; 
  632. 62060 FOR N9 = 1 TO MAX
  633. 62070 K$(N9) = ""
  634. 62080 PRINT "_";
  635. 62090 NEXT N9
  636. 62100 PRINT "<";
  637. 62110 T2 = MAX + 1
  638. 62120 FOR T4 = 1 TO T2
  639. 62130 PRINT CHR$(CH);
  640. 62140 NEXT T4
  641. 62150 KT = 0
  642. 62160 KTMAX = 1
  643. 62170 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  644. 62180 KT = KT + 1
  645. 62190 PRINT TAB(KT+1)"";
  646. 62200 K$ = INKEY$
  647. 62210 IF K$ = "" GOTO 62200
  648. 62220 C = ASC(K$)
  649. 62230 IF C = 0 THEN GOSUB 61900
  650. 62240 IF C = 13 GOTO 62350
  651. 62250 IF C = 17 OR C = 8 GOTO 62920
  652. 62260 IF C = 19 GOTO 62450
  653. 62270 IF C = 4  GOTO 62500
  654. 62280 IF C = 6 GOTO 62560
  655. 62290 IF C = 1 GOTO 62730
  656. 62300 IF KT > MAX GOTO 62190
  657. 62310 K$(KT) = K$
  658. 62320 PRINT K$(KT);
  659. 62330 IF KT > KTMAX THEN KTMAX = KT
  660. 62340 GOTO 62180
  661. 62350 REM **********  RETURN  **********
  662. 62360 FOR T9 = 1 TO MAX
  663. 62370 A$ = A$ + K$(T9)
  664. 62420 NEXT T9
  665. 62430 PRINT "" 
  666. 62440 RETURN  
  667. 62450 REM ********* MOVE CURSE BACK ********
  668. 62460 IF KT = 1 GOTO 62190
  669. 62470 KT = KT - 1
  670. 62480 PRINT CHR$(CH);
  671. 62490 GOTO 62190
  672. 62500 REM ********* MOVE CURSER FORWARD *********
  673. 62510 IF KT >= MAX GOTO 62190
  674. 62520 IF KT >  KTMAX  GOTO 62190
  675. 62530 PRINT K$(KT);
  676. 62540 KT = KT + 1
  677. 62550 GOTO 62190
  678. 62560 REM ********** INSERT ***********
  679. 62570 X9 = MAX
  680. 62580 WHILE X9 > KT
  681. 62590 X9 = X9 - 1
  682. 62600 K$(X9 + 1) = K$(X9)
  683. 62610 WEND 
  684. 62620 K$(KT) = " "
  685. 62630 KTMAX = KTMAX + 1
  686. 62640 IF KTMAX > MAX THEN KTMAX = MAX
  687. 62650 FOR T9 = KT TO KTMAX
  688. 62660 PRINT K$(T9);
  689. 62670 NEXT T9
  690. 62680 T6 = (KTMAX - KT) +1
  691. 62690 FOR T7 = 1 TO T6
  692. 62700 PRINT CHR$(CH);
  693. 62710 NEXT T7
  694. 62720 GOTO 62190
  695. 62730 REM ********** DELETE ***********
  696. 62740 IF KT > KTMAX GOTO 62200
  697. 62750 IF KTMAX = 1 GOTO 62190
  698. 62760 K$(MAX + 1) = ""
  699. 62770 X9 = KT 
  700. 62780 WHILE X9 <= KTMAX
  701. 62790 K$(X9) = K$(X9 + 1)
  702. 62800 X9 = X9 + 1
  703. 62810 WEND 
  704. 62820 KTMAX = KTMAX - 1
  705. 62830 FOR T9 = KT TO KTMAX
  706. 62840 PRINT K$(T9);
  707. 62850 NEXT T9
  708. 62860 PRINT "_";
  709. 62870 T7 = (KTMAX - KT) + 2
  710. 62880 FOR T6 = 1 TO T7
  711. 62890 PRINT CHR$(CH);
  712. 62900 NEXT T6
  713. 62910 GOTO 62190
  714. 62920 REM ********* BACKSPACE ********
  715. 62930 IF KT = 1 GOTO 62190
  716. 62940 K$(KT) = " "
  717. 62950 KT = KT - 1
  718. 62960 K$(KT) = " "
  719. 62970 PRINT CHR$(CH);
  720. 62980 PRINT "_";
  721. 62990 PRINT CHR$(CH);
  722. 63000 GOTO 62190
  723.  " "
  724. 62950 KT = KT - 1
  725. 62960 K$(KT) = " "
  726. 62970